package com.ruoyi.clinic.service;

import java.util.List;

import com.ruoyi.clinic.domain.ClinicDoctorInfo;
import com.ruoyi.clinic.dto.clinicdoctor.*;
import com.ruoyi.common.core.domain.entity.SysUser;

/**
 * 医生信息Service接口
 *
 * @author Tommy
 * @date 2025-11-08
 */
public interface IClinicDoctorInfoService {
    /**
     * 查询医生信息
     *
     * @param doctorId 医生信息主键
     * @return 医生信息
     */
    public ClinicDoctorInfo selectClinicDoctorInfoByDoctorId(Long doctorId);

    /**
     * 查询详情
     *
     * @param doctorId 医生ID
     * @return 详情
     */
    ClinicDoctorDetailDTO queryClinicDoctorDetail(Long doctorId, SysUser sysUser);

    /**
     * 查询医生信息列表
     *
     * @param dto 前端入参
     * @return 医生信息集合
     */
    public List<ClinicDoctorResDTO> queryPageList(ClinicDoctorReqDTO dto, SysUser sysUser);

    /**
     * 查询我负责的医生
     *
     * @param dto 前端入参
     * @return 医生信息集合
     */
    List<ClinicDoctorResDTO> queryMyDoctorPageList(ClinicDoctorReqDTO dto, SysUser sysUser);

    /**
     * 导入数据
     *
     * @param doctorImportDTOList 导入文件表格
     * @param updateSupport       是否支持更新
     * @param sysUser             当前登录用户
     * @return 错误消息
     */
    String importData(List<ClinicDoctorImportDTO> doctorImportDTOList, boolean updateSupport, SysUser sysUser);

    /**
     * 导入数据 我负责的医生
     *
     * @param doctorImportDTOList 导入文件表格
     * @param updateSupport       是否支持更新
     * @param sysUser             当前登录用户
     * @return 错误消息
     */
    String importMyDoctorData(List<ClinicDoctorImportDTO> doctorImportDTOList, boolean updateSupport, SysUser sysUser);

    /**
     * 新增医生信息
     *
     * @param dto 医生信息
     * @return 结果
     */
    public int insertClinicDoctorInfo(ClinicDoctorUpdateDTO dto);

    /**
     * 修改医生信息
     *
     * @param dto 医生信息
     * @return 结果
     */
    public int updateClinicDoctorInfo(ClinicDoctorUpdateDTO dto);

    /**
     * 批量删除医生信息
     *
     * @param doctorIds 需要删除的医生信息主键集合
     * @return 结果
     */
    public int deleteClinicDoctorInfoByDoctorIds(String doctorIds);

    /**
     * 删除医生信息信息
     *
     * @param doctorId 医生信息主键
     * @return 结果
     */
    public int deleteClinicDoctorInfoByDoctorId(Long doctorId);
}
